home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
usergrouplib.lha
/
usergroup
/
credential.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-09-02
|
3KB
|
114 lines
/* $Id: credential.h,v 4.1 1994/05/16 14:09:07 ppessi Exp $
*
* credential.h -- credential resource
*
* Author: ppessi <Pekka.Pessi@hut.fi>
*
* This file is part of the AmiTCP/IP usergroup.library.
*
* Copyright © 1993 AmiTCP/IP Group, <AmiTCP-Group@hut.fi>
* Helsinki University of Technology, Finland.
*
* Created : Tue Jan 18 10:53:56 1994 ppessi
* Last modified: Mon May 16 12:52:00 1994 ppessi
*
*/
#define CREDENTIALNAME "credential.resource"
#define _PATH_CREDENTIAL "AmiTCP:libs/credential.resource"
#define UG_CredRes 0xCAED
/*
* Credentials
*/
struct ucred {
short cr_ref; /* reference count */
short cr_ngroups; /* number of groups */
uid_t cr_uid; /* effective user id */
gid_t cr_groups[NGROUPS]; /* groups */
};
#define cr_gid cr_groups[0]
/*
* Process owner
*/
struct pcred {
struct ucred *pc_ucred; /* current credentials */
uid_t p_ruid; /* real user id */
gid_t p_rgid; /* real group id */
short p_refcnt; /* number of references */
};
#define p_ngroups pc_ucred->cr_ngroups
#define p_groups pc_ucred->cr_groups
#define p_euid pc_ucred->cr_uid
#define p_egid pc_ucred->cr_gid
/*
* Constant IDs
*/
#define ROOT_UID 0
#define NOID -1
#define NOBODY -2
#define ISROOT(p) ((p)->p_euid == ROOT_UID)
struct session {
pid_t s_leader;
struct MsgPort *s_consoletask;
char s_login[MAXLOGNAME]; /* setlogin() name */
};
/*
* This have got some 4.4BSD proc fields
*/
struct proc {
struct session p_session[1];
struct pcred p_cred[1];
mode_t p_umask;
};
#define p_ucred p_cred->pc_ucred
struct CredentialResource {
struct Library r_Lib;
struct proc r_proc[1]; /* global "process" */
struct ucred r_ucred[1];
struct lastlog r_lastlog[1];
struct utmp r_utmp[1];
UBYTE r_name[((sizeof(CREDENTIALNAME) +3) & ~3)];
UBYTE r_vstring[1];
};
struct CredentialResource *CredentialInit(const char *name);
extern struct CredentialResource *CredentialBase;
struct proc *procfind(pid_t pid);
struct ucred *crcopy(struct ucred *cred);
#ifdef notyet
struct ucred *crget(void);
void crfree(struct ucred *cr);
struct proc *proccopy(struct proc *, pid_t new);
#pragma libcall CredentialBase procfind 6 001
#pragma libcall CredentialBase proccopy C 0902
#pragma libcall CredentialBase crcopy 12 901
#pragma libcall CredentialBase crget 18 00
#pragma libcall CredentialBase crfree 1E 901
#endif
int suser(struct ucred *cred);
#define IsMinListEmpty(x) \
( ((x)->mlh_TailPred) == (struct MinNode *)(x) )
/* These macros have typechecking */
#define MinRemove(mn) do { struct MinNode *_mnp=(mn);Remove((struct Node*)_mnp); } while(0)
#define MinAddHead(ml, mn) do { struct MinList *_mlp=(ml); struct MinNode *_mnp=(mn); AddHead((struct List*)_mlp, (struct Node*)_mnp); } while(0)
#define lock(x)
#define unlock(x)